<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <p>
      欢迎你啊
    </p>
    <button @click="getStudentInfo">获取学生信息</button>
    <button @click="getCarInfo">获取汽车信息</button>
    <!-- 读取vuex中的数据语法 -->
    <h1>当前求和放大10倍为：{{$store.getters.bigSums}}</h1>    
    <h1>当前求和为：{{$store.state.sum}}</h1> 
    <!-- 简写形式 -->
    <h1>当前求和放大10倍为：{{bigSums}}</h1> 
    <h1>当前求和为：{{he}}</h1> 
    <button @click="addNumber">点击给sum加1</button>
    <button @click="delNumber">点击给sum减1</button>

    <el-button>默认按钮</el-button>
    <el-button type="primary">主要按钮</el-button>
    <el-button type="success">成功按钮</el-button>
  </div>
</template>

<script>
import {mapState,mapGetters} from 'vuex'
import axios from 'axios'
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  data() {
    return {
      n: 1,
    }
  },

  computed: {
    //借助mapstate生成计算属性，从state中读取数据（对象写法）
    ...mapState({he: 'sum'}),
    ...mapGetters({bigSums: 'bigSums'})
  },

  mounted(){
    console.log('hello', this) //验证是否获取到了事件总线里面的东西
  },

  methods: {
    getStudentInfo() {
      //注意这写上的是全路径，但是关键是前面的部分是代理服务器的地址，当不加shucheng，且students在public文件夹下，也就不会走代理了
      //加上shucheng他就会去方式2里面找对应的key存在就走代理
      axios.get('http://localhost:8080/shucheng/students').then(res => {
        console.log('请求成功了',res.data)
      }, error => {
        console.log('请求失败了', error.mssage)
      })
    },

    getCarInfo() {
      axios.get('http://localhost:8080/shu/cars').then(res => {
        console.log('请求成功了',res.data)
      }, error => {
        console.log('请求失败了', error.mssage)
      })
    },

    addNumber() {
      // this.$store.dispatch('jia', this.n) 不需要走actions因为加几是知道的，因此职级走commit到mutations。
      this.$store.commit('JIA', this.n)
    },

    delNumber() {
      this.$store.dispatch('jian', this.n)
    }

  }

}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>
